linux-i386: Fix CONFIG_X86_NO_TSS and CONFIG_X86_SYSENTER.
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Mon, 20 Feb 2006 23:01:50 +0000 (23:01 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Mon, 20 Feb 2006 23:01:50 +0000 (23:01 +0000)
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
linux-2.6-xen-sparse/arch/i386/kernel/cpu/common-xen.c
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/processor.h

index 4d646fe16fcd00685991c4912c2e685c26382636..1065f4160ae0c35c6976bf148e6ece0a40307478 100644 (file)
@@ -595,7 +595,7 @@ void __cpuinit cpu_gdt_init(struct Xgt_desc_struct *gdt_descr)
 void __cpuinit cpu_init(void)
 {
        int cpu = smp_processor_id();
-#ifdef CONFIG_DOUBLEFAULT
+#ifndef CONFIG_X86_NO_TSS
        struct tss_struct * t = &per_cpu(init_tss, cpu);
 #endif
        struct thread_struct *thread = &current->thread;
index 8ff4c15cb9cd8c6f7b21443d06b3af49bca8cf6e..1e72f53e12db7dffc93542a24c2550090d960391 100644 (file)
@@ -503,15 +503,19 @@ struct thread_struct {
        .io_bitmap      = { [ 0 ... IO_BITMAP_LONGS] = ~0 },            \
 }
 
-static inline void load_esp0(struct tss_struct *tss, struct thread_struct *thread)
+static inline void __load_esp0(struct tss_struct *tss, struct thread_struct *thread)
 {
        tss->esp0 = thread->esp0;
+#ifdef CONFIG_X86_SYSENTER
        /* This can only happen when SEP is enabled, no need to test "SEP"arately */
        if (unlikely(tss->ss1 != thread->sysenter_cs)) {
                tss->ss1 = thread->sysenter_cs;
                wrmsr(MSR_IA32_SYSENTER_CS, thread->sysenter_cs, 0);
        }
+#endif
 }
+#define load_esp0(tss, thread) \
+       __load_esp0(tss, thread)
 #else
 #define load_esp0(tss, thread) \
        HYPERVISOR_stack_switch(__KERNEL_DS, (thread)->esp0)